<?php
	class Nphpinfo {
		#	기능: phpinfo()의 출력으로부터 필요한 정보만 리턴
		#	원리: phpinfo()의 출력을 각 라인당 인수 문자열과  매칭한후 테그 없애고 리턴
		#	인수: phpinfo()의 도표에서 왼편 항목이름을 그대로 복사해서 사용해야함
		public static function get_phpinfo($name) {
			static $line;
			if (is_null ($line)){  // 이 블럭은 한번만 실행해라
				ob_start();
				phpinfo();
				$info = ob_get_contents();
				ob_end_clean();
				$line= split("\n",$info);
			}
			foreach ($line as $key=>$val){
				$patt=$name.'[::space::]*(.+)$';
				if (ereg($patt,$val,$arr)){
					return strip_tags($arr[1]);
				}
			}
			return '';
		}

		# echo "<pre>".print_r(phpinfo_array(), 1)."</pre>";
		public static function phpinfo_array() {
			ob_start();
			phpinfo();
			$info_arr = array();
			$info_lines = explode("\n", strip_tags(ob_get_clean(), "<tr><td><h2>"));
			$cat = "General";
			foreach($info_lines as $line)
			{
				// new cat?
				preg_match("~<h2>(.*)</h2>~", $line, $title) ? $cat = $title[1] : null;
				if(preg_match("~<tr><td[^>]+>([^<]*)</td><td[^>]+>([^<]*)</td></tr>~", $line, $val))
				{
					$info_arr[$cat][$val[1]] = $val[2];
				}
				elseif(preg_match("~<tr><td[^>]+>([^<]*)</td><td[^>]+>([^<]*)</td><td[^>]+>([^<]*)</td></tr>~", $line, $val))
				{
					$info_arr[$cat][$val[1]] = array("local" => $val[2], "master" => $val[3]);
				}
			}
			return $info_arr;
		}

	}
?>